01_8_session
1. session总结
1.1服务器的一块内存(存key-value)
1.2和客户端窗口对应(子窗口)(独一无二)
1.3客户端和服务器有对应的SessionID
1.4客户端服务器端发送SessionID的时候两种方式
- cookie(内存cookie)
- rewrite URL
1.5浏览器禁掉cookie,就不能使用session(使用cookie实现session)
1.6如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),很多网站要求客户端打开cookie
2.例子
2.1ShowSession.java
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();String title = "Session Tracking Example";HttpSession session = request.getSession(true);String heading;Integer accessCount = (Integer) session.getAttribute("accessCount");System.out.println(accessCount);if (accessCount == null) {accessCount = new Integer(0);heading = "Welcom, Newcomer";System.out.println(accessCount);} else {heading = "Welcome Back";accessCount = new Integer(accessCount.intValue() + 1);}session.setAttribute("accessCount", accessCount);/*Integer access = (Integer) session.getAttribute("accessCount");System.out.println(access);*/out.println("");out.println("");out.println("Session追踪 ");out.println(" ");out.print("" + heading + "
");out.print("Information on Your Session:
");out.println("
Info Type | Value |
---|---|
Creation Time | " + new Date(session.getCreationTime())+ " |
Time of Last Access | " + new Date(session.getLastAccessedTime()) + " |
Number of Previous Accesses | " + accessCount+ " |
2.2SessionInfoServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();HttpSession session = request.getSession(true); out.println("");out.println("");out.println("Session Info Servlet ");out.println(" ");out.print("Session Information
");out.print("New Session:" + session.isNew());out.println("Session ID:" + session.getId());out.println("Session Creation Time:" + new Date(session.getCreationTime()));out.println("Session Last Accessed Time:" + new Date(session.getLastAccessedTime()));out.println("Request Information
");out.println("Session ID from Request:" + request.getRequestedSessionId());out.println("Session ID Via Cookie:" + request.isRequestedSessionIdFromCookie());out.println("Session ID Via rewritten URL:" + request.isRequestedSessionIdFromURL());out.println("Valid Sesion ID:" + request.isRequestedSessionIdValid());out.println(" ");out.println("");out.flush();out.close();}
2.3URLSession.java
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { response.setContentType("text/html; charset=utf-8");PrintWriter out = response.getWriter();HttpSession session = request.getSession(true);out.println("");out.println("");out.println("Session 追踪 ");out.println(" ");out.print("session id:" + session.getId() + "");out.print("from url:" + request.isRequestedSessionIdFromUrl() + "");out.print("from cookie:" + request.isRequestedSessionIdFromCookie() + "");out.println(" test ");out.println(" test ");out.println(" ");out.println("");out.flush();out.close();}